package com.zhangxu.microservice.auth.dao.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhangxu.microservice.auth.dao.condition.EmployeeRoleCondition;
import com.zhangxu.microservice.auth.dao.entity.EmployeeRoleDO;

import java.util.List;

/**
 * 员工角色关系 DAO 接口
 */
public interface EmployeeRoleDao extends IService<EmployeeRoleDO> {

    /**
     * 根据员工ID获取角色关系列表
     *
     * @param employeeId 员工ID
     * @return 角色关系列表
     */
    List<EmployeeRoleDO> getByEmployeeId(Long employeeId);

    /**
     * 根据角色ID获取员工关系列表
     *
     * @param roleId 角色ID
     * @return 员工关系列表
     */
    List<EmployeeRoleDO> getByRoleId(Long roleId);

    /**
     * 根据员工ID和角色ID获取关系
     *
     * @param employeeId 员工ID
     * @param roleId 角色ID
     * @return 员工角色关系
     */
    EmployeeRoleDO getByEmployeeIdAndRoleId(Long employeeId, Long roleId);

    /**
     * 分页查询员工角色关系
     *
     * @param condition 查询条件
     * @return 分页结果
     */
    IPage<EmployeeRoleDO> page(EmployeeRoleCondition condition);

    /**
     * 根据员工ID删除所有角色关系
     *
     * @param employeeId 员工ID
     */
    void deleteByEmployeeId(Long employeeId);

    /**
     * 根据角色ID删除所有员工关系
     *
     * @param roleId 角色ID
     */
    void deleteByRoleId(Long roleId);
}